assert that the passed in arrow is always _UP or _DOWN, this catches false
authorTim Janik <timj@gtk.org>
Fri, 25 Jan 2002 13:22:00 +0000 (13:22 +0000)
committerTim Janik <timj@src.gnome.org>
Fri, 25 Jan 2002 13:22:00 +0000 (13:22 +0000)
Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>

        * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
        that the passed in arrow is always _UP or _DOWN, this catches
        false invocations which lead to drawing artefacts.
        (start_spinning): likewise, i.e. sanity check the passed in arrow.
        (gtk_spin_button_button_release): fix arrow redrawing.
        (gtk_spin_button_button_press): must set click_child for
        button3 even if we don't take spinning action right away.

        * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
        valid values for click_child.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkspinbutton.c
gtk/gtkspinbutton.h

index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index b900d83a901ed4c2653824857ec94bb18b53272d..e141c48f1a1ee2fe1ca12063744479550935034c 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 25 14:03:36 2002  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert
+       that the passed in arrow is always _UP or _DOWN, this catches
+       false invocations which lead to drawing artefacts.
+       (start_spinning): likewise, i.e. sanity check the passed in arrow.
+       (gtk_spin_button_button_release): fix arrow redrawing.
+       (gtk_spin_button_button_press): must set click_child for
+       button3 even if we don't take spinning action right away.
+
+       * gtk/gtkspinbutton.h (struct _GtkSpinButton): document
+       valid values for click_child.
+
 Thu Jan 24 23:03:24 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): update docs,
index 12b3ac22b274433113fe6d57c5984d677cedc416..f1909a89a225a9abe0dc2641cd1fbbb96e86da86 100644 (file)
@@ -757,6 +757,7 @@ gtk_spin_button_draw_arrow (GtkSpinButton *spin_button,
   gint arrow_size;
 
   g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button));
+  g_return_if_fail (arrow == GTK_ARROW_UP || arrow == GTK_ARROW_DOWN);
   
   widget = GTK_WIDGET (spin_button);
   spin_shadow_type = spin_button_get_shadow_type (spin_button);
@@ -974,6 +975,8 @@ start_spinning (GtkSpinButton *spin,
                GtkArrowType   click_child,
                gfloat         step)
 {
+  g_return_if_fail (click_child == GTK_ARROW_UP || click_child == GTK_ARROW_DOWN);
+  
   spin->click_child = click_child;
   gtk_spin_button_real_spin (spin, click_child == GTK_ARROW_UP ? step : -step);
   
@@ -1016,6 +1019,8 @@ gtk_spin_button_button_press (GtkWidget      *widget,
                start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
              else if (event->button == 2)
                start_spinning (spin, GTK_ARROW_UP, spin->adjustment->page_increment);
+             else
+               spin->click_child = GTK_ARROW_UP;
            }
          else 
            {
@@ -1023,6 +1028,8 @@ gtk_spin_button_button_press (GtkWidget      *widget,
                start_spinning (spin, GTK_ARROW_DOWN, spin->adjustment->step_increment);
              else if (event->button == 2)
                start_spinning (spin, GTK_ARROW_DOWN, spin->adjustment->page_increment);
+             else
+               spin->click_child = GTK_ARROW_DOWN;
            }
          return TRUE;
        }
@@ -1080,6 +1087,7 @@ gtk_spin_button_button_release (GtkWidget      *widget,
       click_child = spin->click_child;
       spin->click_child = 2;
       gtk_spin_button_draw_arrow (spin, click_child);
+
       return TRUE;
     }
   else
index d22c9c3bb368e060a770e0bcbe71a4484596d21e..04610cb455ddc7cd401b48cff81c5379cd3cf731 100644 (file)
@@ -89,7 +89,7 @@ struct _GtkSpinButton
   GtkSpinButtonUpdatePolicy update_policy;
   
   guint in_child : 2;
-  guint click_child : 2;
+  guint click_child : 2; /* valid: GTK_ARROW_UP=0, GTK_ARROW_DOWN=1 or 2=NONE/BOTH */
   guint button : 2;
   guint need_timer : 1;
   guint timer_calls : 3;